SWEA 알고리즘 SWEA1223 계산기2 SWEA 알고리즘스택SWEA 알고리즘 SWEA4012 요리사 SWEA 알고리즘조합SWEA 알고리즘 SWEA1224 계산기3 앞서 풀었던 계산기2 문제와 다르지 않다. 괄호 연산만 추가적으로 생각해주면 된다.... 구현SWEA 알고리즘스택SWEA 알고리즘 SWEA3499 퍼펙트 셔플 큐SWEA 알고리즘구현SWEA 알고리즘 SWEA1861 정사각형 방 SWEA 알고리즘DFS2차원 배열BFS2차원 배열 SWEA1233 사칙연산 유효성 검사 이진 트리에 관한 문제이지만, 입력의 규칙성을 찾아낸다면 이진트리에 대한 이해가 없이도 쉽게 풀 수 있다. 연산이 가능한 경우는 모두 리프 노드(최하위 노드)가 숫자로 구성되고, 나머지 노드는 연산자로 구성되어 있다. 입력에서 리프노드가 가장 마지막에 들어오기 때문에 해당 조건만 확인하면 원하는 답을 얻을 수 있다.... SWEA 알고리즘이진 트리SWEA 알고리즘 SWEA13240 정사각형 글꼴 간판의 가로, 세로 길이 그리고 기록될 문구가 주어지고, 사용할 수 있는 최대 글자 크기를 구하는 문제다. 사이즈를 점점 늘려가며 조건이 맞으면 갱신하고, 맞지 않으면 종료하면 된다.... 구현SWEA 알고리즘SWEA 알고리즘 SWEA1228 암호문1 구현SWEA 알고리즘SWEA 알고리즘 SWEA9229 한빈이와 Spot Mart 과자 두 봉지를 조건에 맞게 고르는 문제이다. 때문에 2중 for문을 사용해 완전 탐색을 하면 쉽게 답을 구할 수 있다.... SWEA 알고리즘구현SWEA 알고리즘 SWEA1218 괄호 짝짓기 SWEA 알고리즘스택SWEA 알고리즘 SWEA2001 파리 퇴치 구현SWEA 알고리즘2차원 배열2차원 배열 SWEA1208 Flatten 구현SWEA 알고리즘2차원 배열2차원 배열 SWEA1873 상호의 배틀필드 주어지는 조건에 맞게 구현하면 되는 문제다. 2차원 배열을 다룰 수 있으면 어렵지 않게 풀 수 있다.... 구현SWEA 알고리즘2차원 배열2차원 배열 SWEA2805 농작물 수확하기 이 문제를 보면 BFS를 이용하거나 2차원 배열의 인덱스를 이용해 마름모에 포함되는지 확인하는 방법이 떠오른다. BFS가 익숙해지고 보면 단순히 BFS를 이용하는 게 구현하는 것이 쉽지만, 실행시간에서는 인덱스를 이용해 조건을 만들어 주는 것이 훨씬 효율적이다.... 구현SWEA 알고리즘SWEA 알고리즘 SWEA13428 숫자 조작 단순한 구현문제이다. char[] 배열로 입력 받아 각 자리를 변경해보고 가장 큰 수일 때와 가장 작은 수일 때 갱신하면 된다.... 구현SWEA 알고리즘SWEA 알고리즘 SWEA5215 햄버거 다이어트 SWEA 알고리즘조합SWEA 알고리즘 SWEA1289 원재의 메모리 복구하기 SWEA 알고리즘구현SWEA 알고리즘 [SWEA] 4012. [모의 SW 역량테스트] 요리사 원하는 음식을 선택하는 것이므로 조합이다. 음식을 선택하는 경우의 수를 생각해본다. 따라서 조합이다. 식재료가 네 개인 경우는 다음과 같다. 이 때 0 0 1 1과 1 1 0 0은 같다. 따라서 절반보다 큰 값은 다 제거한다. 따라서 왼쪽 끝이나 오른쪽 끝이나 한 쪽에 0만 들어가는 경우로 확인하면 된다. 마지막 뽑는 횟수를 제거하고 그 땐 0만 뽑는다고 생각하여 절반만 확인하도록 한다. 조... SWEA 알고리즘SWEA 알고리즘 [SWEA] 1232. [S/W 문제해결 기본] 9일차 - 사칙연산 [D4] 이진 트리 문제이다. 다음과 같이 연산자와 숫자가 들어왔을 때 최종 계산 결과를 출력하는 프로그램이다. 리프 노드들을 서로 연산해줘야하니 후위 순회 방법을 활용한다. 배열에 부모와 자식 관계를 나타내지만 말고, 값도 함께 담아준다. 값이 연산자인 경우는 문자열이니 이를 주의하며 구현해야한다. 연산 과정에서는 실수 연산인 /를 사용하고 마지막에 int()로 형변환하여 정수로 바꿔준다.... SWEA 알고리즘SWEA 알고리즘 [SWEA] 1486. 장훈이의 높은 선반 [D4] 사람을 한 명씩 고르거나 안 고르거나 선택할 수 있다. 따라서 조합이다. 가지치기를 하여 시간복잡도를 줄여준다. 먼저 재귀를 활용해 확인한 cur, 키의 합을 함수의 인자로 사용한다. ex). 5명이면 cur이 0부터 1명씩 확인하여 4까지 확인한 후 5에서 종료한다. 고르면 키의 합에 더해주고, 고르지 않으면 cur만 1 늘려준다. cur이 5인 순간 모든 인원을 확인한 순간이다. 이 때 ... SWEA 알고리즘SWEA 알고리즘 [SWEA] 2105. [모의 SW 역량테스트] 디저트 카페 재귀를 활용한 백트래킹을 활용한다. 움직이는 방향을 네 방향으로 움직이지 않고 시작점 기준 일정한 방향으로 움직이며 사각형을 그린다. 오른쪽 아래, 왼쪽 아래, 왼쪽 위, 오른쪽 위 방향 순서대로 그리기로 약속한다. 직진하거나 꺾는 것 두 가지 조합으로 재귀를 구현한다. 이 때 꺾을 때마다 방향으로 한 번 이상 움직이고 꺾게끔 해야 한다. 왜냐하면 문제에서 아래와 같이 주어졌다. 그리고 두 ... SWEA 알고리즘SWEA 알고리즘 [SWEA] 1240. [S/W 문제해결 응용] 1일차 - 단순 2진 암호코드 [D3] 암호 코드를 먼저 찾고, 검증코드가 맞는지 찾아 출력한다. 암호 코드의 시작점을 찾는 함수를 만든다. 배열이 들어오면 앞 뒤로 0이 채워져서 나타난다.따라서 뒤부터 0이 아닌 값이 있는지 확인한다. 행에 0이 아닌 값이 없으면 다음 행을 탐색한다. 이 때 배열이 50x100으로 재귀로 한 칸씩 확인해도 가능하니 재귀호출하는 방법을 사용한다. 암호의 시작점을 찾았으면, 해독하는 함수를 만들어 ... SWEA 알고리즘SWEA 알고리즘 [SWEA] 1952. [모의 SW 역량테스트] 수영장 순열 문제이다. 이용권은 4 종류이다. ① 1일 이용권 : 1일 이용이 가능하다. ② 1달 이용권 : 1달 동안 이용이 가능하다. 1달 이용권은 매달 1일부터 시작한다. ③ 3달 이용권 : 연속된 3달 동안 이용이 가능하다. 3달 이용권은 매달 1일부터 시작한다. (11월, 12월에도 3달 이용권을 사용할 수 있다 / 다음 해의 이용권만을 구매할 수 있기 때문에 3달 이용권은 11월, 12월... SWEA 알고리즘SWEA 알고리즘 [SWEA] 2117. [모의 SW 역량테스트] 홈 방범 서비스 BFS 문제이다. 이용자를 담는 배열을 만들어 서비스 영역마다 넣어준다. 위 그림을 보면 각 숫자에 사람이 있으면 카운팅 배열로 숫자 값에 1씩 더해준다. 넓혀지면서 1씩 늘어야하므로 BFS 탐색을 한다. 그리고 최종적으로 누적합을 면적 당 이용자의 총 인원을 구한다. 그리고 서비스를 제공함으로써 받는 비용과 운영 비용의 차이가 양수면서 서비스 면적이 가장 큰 경우 서비스를 받는 총 인원 수... SWEA 알고리즘SWEA 알고리즘 [SWEA] 2819. 격자판의 숫자 이어 붙이기 [D4] 델타 탐색을 통한 순열문제로 DFS 탐색 문제이다. 모든 배열의 위치를 초기값으로 하여 각각 DFS 탐색을 한다. 재귀함수로 7번 탐색하면 순열을 확인하고 return하도록 만든다. visited를 활용해 중복을 제거한다. 0~9까지를 9번 곱한 배열을 만들 순 없으니 visited를 set자료형으로 만들어 값이 같은지 확인한다. set로 확인하기 위해 수정할 수 없는 자료형을 담아줘야하기 ... SWEA 알고리즘SWEA 알고리즘 [SWEA] 4366. 정식이의 은행업무 [D4] 입력으로 들어오는 2진수를 for문으로 한 자리씩 xor 연산을 통해 뒤집어 준다. 그리고 10진수로 바꾼 후 3진수로 변경한다. 3진수로 바꾼 값이 기존의 3진수와 문자열 하나씩 비교하여 차이가 하나만 나는 경우 그 떄의 10진수 값을 출력한다.... SWEA 알고리즘SWEA 알고리즘 [SWEA] 4615. 재미있는 오셀로 게임 [D3] 추억의 오셀로 게임이다. 오목문제와 마찬가지로 델타 탐색을 활용해서 푼다. 오셀로 게임은 룰이 간단한데 내 돌이 다른 돌을 둘러쌓는 경우만 놓을 수 있고 둘러 쌓으면 내 돌의 색으로 바꾼다. 문제에 있는 예제 그림을 보면 다음과 같이 검정이 놓을 수 있는 곳은 4군데이고 검정을 놓으면, 둘러 쌓인 흰돌이 검정으로 바뀐다. 문제에서 돌을 놓는 경우를 알려주면 그 때에 맞추어 돌을 뒤집어 주면 ... SWEA 알고리즘SWEA 알고리즘 [SWEA] 5185. [파이썬 S/W 문제해결 구현] 1일차 - 이진수 [D2] 16진수를 2진수로 표현하는 문제이다. 16진수는 1~F까지 표현되므로 A부터 F는 딕셔너리를 이용해 바꾸어준다. 먼저 16진수를 10진수로 바꾸고 2진수로 바꾼다. 2진수로 바꿀 땐 2진수 앞자리 0도 출력해야하므로 4번 2로 나누면서 나머지를 출력한다.... SWEA 알고리즘SWEA 알고리즘 [SWEA] 1865. 동철이의 일 분배 [D4] 중복없는 순열 문제이다. 여기서는 값을 곱해가면서 구하는데, 곱할수록 값이 작아지는 걸 활용해 가지치기 한다. 곱할수록 값이 작아지니, 현재 구한 최대 확률보다 지금 구하고 있는 확률이 더 작으면 종료하고 다음 재귀를 탐색한다.... SWEA 알고리즘SWEA 알고리즘 이전 기사 보기
SWEA1223 계산기2 SWEA 알고리즘스택SWEA 알고리즘 SWEA4012 요리사 SWEA 알고리즘조합SWEA 알고리즘 SWEA1224 계산기3 앞서 풀었던 계산기2 문제와 다르지 않다. 괄호 연산만 추가적으로 생각해주면 된다.... 구현SWEA 알고리즘스택SWEA 알고리즘 SWEA3499 퍼펙트 셔플 큐SWEA 알고리즘구현SWEA 알고리즘 SWEA1861 정사각형 방 SWEA 알고리즘DFS2차원 배열BFS2차원 배열 SWEA1233 사칙연산 유효성 검사 이진 트리에 관한 문제이지만, 입력의 규칙성을 찾아낸다면 이진트리에 대한 이해가 없이도 쉽게 풀 수 있다. 연산이 가능한 경우는 모두 리프 노드(최하위 노드)가 숫자로 구성되고, 나머지 노드는 연산자로 구성되어 있다. 입력에서 리프노드가 가장 마지막에 들어오기 때문에 해당 조건만 확인하면 원하는 답을 얻을 수 있다.... SWEA 알고리즘이진 트리SWEA 알고리즘 SWEA13240 정사각형 글꼴 간판의 가로, 세로 길이 그리고 기록될 문구가 주어지고, 사용할 수 있는 최대 글자 크기를 구하는 문제다. 사이즈를 점점 늘려가며 조건이 맞으면 갱신하고, 맞지 않으면 종료하면 된다.... 구현SWEA 알고리즘SWEA 알고리즘 SWEA1228 암호문1 구현SWEA 알고리즘SWEA 알고리즘 SWEA9229 한빈이와 Spot Mart 과자 두 봉지를 조건에 맞게 고르는 문제이다. 때문에 2중 for문을 사용해 완전 탐색을 하면 쉽게 답을 구할 수 있다.... SWEA 알고리즘구현SWEA 알고리즘 SWEA1218 괄호 짝짓기 SWEA 알고리즘스택SWEA 알고리즘 SWEA2001 파리 퇴치 구현SWEA 알고리즘2차원 배열2차원 배열 SWEA1208 Flatten 구현SWEA 알고리즘2차원 배열2차원 배열 SWEA1873 상호의 배틀필드 주어지는 조건에 맞게 구현하면 되는 문제다. 2차원 배열을 다룰 수 있으면 어렵지 않게 풀 수 있다.... 구현SWEA 알고리즘2차원 배열2차원 배열 SWEA2805 농작물 수확하기 이 문제를 보면 BFS를 이용하거나 2차원 배열의 인덱스를 이용해 마름모에 포함되는지 확인하는 방법이 떠오른다. BFS가 익숙해지고 보면 단순히 BFS를 이용하는 게 구현하는 것이 쉽지만, 실행시간에서는 인덱스를 이용해 조건을 만들어 주는 것이 훨씬 효율적이다.... 구현SWEA 알고리즘SWEA 알고리즘 SWEA13428 숫자 조작 단순한 구현문제이다. char[] 배열로 입력 받아 각 자리를 변경해보고 가장 큰 수일 때와 가장 작은 수일 때 갱신하면 된다.... 구현SWEA 알고리즘SWEA 알고리즘 SWEA5215 햄버거 다이어트 SWEA 알고리즘조합SWEA 알고리즘 SWEA1289 원재의 메모리 복구하기 SWEA 알고리즘구현SWEA 알고리즘 [SWEA] 4012. [모의 SW 역량테스트] 요리사 원하는 음식을 선택하는 것이므로 조합이다. 음식을 선택하는 경우의 수를 생각해본다. 따라서 조합이다. 식재료가 네 개인 경우는 다음과 같다. 이 때 0 0 1 1과 1 1 0 0은 같다. 따라서 절반보다 큰 값은 다 제거한다. 따라서 왼쪽 끝이나 오른쪽 끝이나 한 쪽에 0만 들어가는 경우로 확인하면 된다. 마지막 뽑는 횟수를 제거하고 그 땐 0만 뽑는다고 생각하여 절반만 확인하도록 한다. 조... SWEA 알고리즘SWEA 알고리즘 [SWEA] 1232. [S/W 문제해결 기본] 9일차 - 사칙연산 [D4] 이진 트리 문제이다. 다음과 같이 연산자와 숫자가 들어왔을 때 최종 계산 결과를 출력하는 프로그램이다. 리프 노드들을 서로 연산해줘야하니 후위 순회 방법을 활용한다. 배열에 부모와 자식 관계를 나타내지만 말고, 값도 함께 담아준다. 값이 연산자인 경우는 문자열이니 이를 주의하며 구현해야한다. 연산 과정에서는 실수 연산인 /를 사용하고 마지막에 int()로 형변환하여 정수로 바꿔준다.... SWEA 알고리즘SWEA 알고리즘 [SWEA] 1486. 장훈이의 높은 선반 [D4] 사람을 한 명씩 고르거나 안 고르거나 선택할 수 있다. 따라서 조합이다. 가지치기를 하여 시간복잡도를 줄여준다. 먼저 재귀를 활용해 확인한 cur, 키의 합을 함수의 인자로 사용한다. ex). 5명이면 cur이 0부터 1명씩 확인하여 4까지 확인한 후 5에서 종료한다. 고르면 키의 합에 더해주고, 고르지 않으면 cur만 1 늘려준다. cur이 5인 순간 모든 인원을 확인한 순간이다. 이 때 ... SWEA 알고리즘SWEA 알고리즘 [SWEA] 2105. [모의 SW 역량테스트] 디저트 카페 재귀를 활용한 백트래킹을 활용한다. 움직이는 방향을 네 방향으로 움직이지 않고 시작점 기준 일정한 방향으로 움직이며 사각형을 그린다. 오른쪽 아래, 왼쪽 아래, 왼쪽 위, 오른쪽 위 방향 순서대로 그리기로 약속한다. 직진하거나 꺾는 것 두 가지 조합으로 재귀를 구현한다. 이 때 꺾을 때마다 방향으로 한 번 이상 움직이고 꺾게끔 해야 한다. 왜냐하면 문제에서 아래와 같이 주어졌다. 그리고 두 ... SWEA 알고리즘SWEA 알고리즘 [SWEA] 1240. [S/W 문제해결 응용] 1일차 - 단순 2진 암호코드 [D3] 암호 코드를 먼저 찾고, 검증코드가 맞는지 찾아 출력한다. 암호 코드의 시작점을 찾는 함수를 만든다. 배열이 들어오면 앞 뒤로 0이 채워져서 나타난다.따라서 뒤부터 0이 아닌 값이 있는지 확인한다. 행에 0이 아닌 값이 없으면 다음 행을 탐색한다. 이 때 배열이 50x100으로 재귀로 한 칸씩 확인해도 가능하니 재귀호출하는 방법을 사용한다. 암호의 시작점을 찾았으면, 해독하는 함수를 만들어 ... SWEA 알고리즘SWEA 알고리즘 [SWEA] 1952. [모의 SW 역량테스트] 수영장 순열 문제이다. 이용권은 4 종류이다. ① 1일 이용권 : 1일 이용이 가능하다. ② 1달 이용권 : 1달 동안 이용이 가능하다. 1달 이용권은 매달 1일부터 시작한다. ③ 3달 이용권 : 연속된 3달 동안 이용이 가능하다. 3달 이용권은 매달 1일부터 시작한다. (11월, 12월에도 3달 이용권을 사용할 수 있다 / 다음 해의 이용권만을 구매할 수 있기 때문에 3달 이용권은 11월, 12월... SWEA 알고리즘SWEA 알고리즘 [SWEA] 2117. [모의 SW 역량테스트] 홈 방범 서비스 BFS 문제이다. 이용자를 담는 배열을 만들어 서비스 영역마다 넣어준다. 위 그림을 보면 각 숫자에 사람이 있으면 카운팅 배열로 숫자 값에 1씩 더해준다. 넓혀지면서 1씩 늘어야하므로 BFS 탐색을 한다. 그리고 최종적으로 누적합을 면적 당 이용자의 총 인원을 구한다. 그리고 서비스를 제공함으로써 받는 비용과 운영 비용의 차이가 양수면서 서비스 면적이 가장 큰 경우 서비스를 받는 총 인원 수... SWEA 알고리즘SWEA 알고리즘 [SWEA] 2819. 격자판의 숫자 이어 붙이기 [D4] 델타 탐색을 통한 순열문제로 DFS 탐색 문제이다. 모든 배열의 위치를 초기값으로 하여 각각 DFS 탐색을 한다. 재귀함수로 7번 탐색하면 순열을 확인하고 return하도록 만든다. visited를 활용해 중복을 제거한다. 0~9까지를 9번 곱한 배열을 만들 순 없으니 visited를 set자료형으로 만들어 값이 같은지 확인한다. set로 확인하기 위해 수정할 수 없는 자료형을 담아줘야하기 ... SWEA 알고리즘SWEA 알고리즘 [SWEA] 4366. 정식이의 은행업무 [D4] 입력으로 들어오는 2진수를 for문으로 한 자리씩 xor 연산을 통해 뒤집어 준다. 그리고 10진수로 바꾼 후 3진수로 변경한다. 3진수로 바꾼 값이 기존의 3진수와 문자열 하나씩 비교하여 차이가 하나만 나는 경우 그 떄의 10진수 값을 출력한다.... SWEA 알고리즘SWEA 알고리즘 [SWEA] 4615. 재미있는 오셀로 게임 [D3] 추억의 오셀로 게임이다. 오목문제와 마찬가지로 델타 탐색을 활용해서 푼다. 오셀로 게임은 룰이 간단한데 내 돌이 다른 돌을 둘러쌓는 경우만 놓을 수 있고 둘러 쌓으면 내 돌의 색으로 바꾼다. 문제에 있는 예제 그림을 보면 다음과 같이 검정이 놓을 수 있는 곳은 4군데이고 검정을 놓으면, 둘러 쌓인 흰돌이 검정으로 바뀐다. 문제에서 돌을 놓는 경우를 알려주면 그 때에 맞추어 돌을 뒤집어 주면 ... SWEA 알고리즘SWEA 알고리즘 [SWEA] 5185. [파이썬 S/W 문제해결 구현] 1일차 - 이진수 [D2] 16진수를 2진수로 표현하는 문제이다. 16진수는 1~F까지 표현되므로 A부터 F는 딕셔너리를 이용해 바꾸어준다. 먼저 16진수를 10진수로 바꾸고 2진수로 바꾼다. 2진수로 바꿀 땐 2진수 앞자리 0도 출력해야하므로 4번 2로 나누면서 나머지를 출력한다.... SWEA 알고리즘SWEA 알고리즘 [SWEA] 1865. 동철이의 일 분배 [D4] 중복없는 순열 문제이다. 여기서는 값을 곱해가면서 구하는데, 곱할수록 값이 작아지는 걸 활용해 가지치기 한다. 곱할수록 값이 작아지니, 현재 구한 최대 확률보다 지금 구하고 있는 확률이 더 작으면 종료하고 다음 재귀를 탐색한다.... SWEA 알고리즘SWEA 알고리즘 이전 기사 보기